/*
 * Niiuzu
 * Copyright (C) 2011  Thierry Nowak
 * 
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.niiuzu.server.dao.impl.dto.mapping;

import com.googlecode.objectify.Key;
import com.niiuzu.server.dao.impl.dto.object.DtoFeedChannelGroup;
import com.niiuzu.server.dao.impl.dto.object.DtoUser;
import com.niiuzu.server.dao.impl.util.KeyUtil;
import com.niiuzu.shared.model.FeedChannelGroup;

/**
 * Mapping des classes modélisant les thèmes.
 */
public class FeedChannelGroupMapper extends
		AbstractMapper<FeedChannelGroup, DtoFeedChannelGroup> {

	@Override
	public FeedChannelGroup mapDtoToSerializable(DtoFeedChannelGroup dtoObject) {

		if (dtoObject == null) {
			return null;
		}

		KeyUtil keyUtil = getKeyUtil();

		FeedChannelGroup serializableObject = new FeedChannelGroup();

		serializableObject.setUid(keyUtil.getEncodedKeyFor(dtoObject));

		serializableObject.setName(dtoObject.getName());
		serializableObject.setStyle(dtoObject.getStyle());

		String userUid = keyUtil.convertKeyToString(dtoObject.getUserKey());
		serializableObject.setUserUid(userUid);

		return serializableObject;
	}

	@Override
	public DtoFeedChannelGroup mapSerializableToDto(
			FeedChannelGroup serializableObject) {

		if (serializableObject == null) {
			return null;
		}

		KeyUtil keyUtil = getKeyUtil();

		DtoFeedChannelGroup dtoObject = new DtoFeedChannelGroup();

		String channelGroupUid = serializableObject.getUid();
		Key<DtoFeedChannelGroup> channelGroupKey = keyUtil.convertStringToKey(
				channelGroupUid, DtoFeedChannelGroup.class);
		if (channelGroupKey != null) {
			dtoObject.setId(channelGroupKey.getId());
		}

		dtoObject.setName(serializableObject.getName());
		dtoObject.setStyle(serializableObject.getStyle());

		String userUid = serializableObject.getUserUid();
		dtoObject
				.setUserKey(keyUtil.convertStringToKey(userUid, DtoUser.class));

		return dtoObject;
	}
}
